package 位运算;
import java.util.*;
/**
 * 计算两个整数之间的汉明距离
 * 时间复杂度O(log n)，空间复杂度O(1)，n为输入整数的最大值
 */
public class hammingDistance {
    /**
     * 计算两个整数之间的汉明距离
     * 
     * @param x 第一个整数
     * @param y 第二个整数
     * @return 汉明距离
     */
    public int hammingDis(int x, int y){
        // return Integer.bitCount(x ^ y); // 使用Java内置方法计算汉明距离
        int z = (x ^ y); // 计算x和y的异或结果
        int dis = 0; // 初始化汉明距离为0
        while(z != 0){ // 当z不为0时，继续计算
            if((z & 1) == 1) dis++; // 如果z的最低位为1，则汉明距离加1
            z = (z >> 1); // 将z右移一位
        }
        return dis; // 返回汉明距离
    }

    /**
     * 主函数：处理输入输出
     * 输入格式：两个整数x和y
     * 例如：1 4 表示两个输入整数
     * 输出格式：汉明距离
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt(); // 读取第一个整数
        int y = sc.nextInt(); // 读取第二个整数
        hammingDistance hd = new hammingDistance(); // 创建实例
        System.out.println(hd.hammingDis(x, y)); // 输出汉明距离
        sc.close(); // 关闭输入流
    }
}
